﻿#region Using

using System;
using System.Collections.Generic;
using System.Linq;
using Vk.Methods.Common;

#endregion

namespace Vk.Methods.Polls
{
    /// <summary>
    ///     Опрос
    /// </summary>
    public class Poll : BaseEntity
    {
        /// <summary>
        ///     Идентификатор ответа текущего пользователя (если текущий пользователь еще не отвечал в данном опросе, то содержит 0)
        /// </summary>
        public int? AnswerId { get; set; }

        /// <summary>
        ///     Массив, содержащий объекты с вариантами ответа на вопрос в опросе
        /// </summary>
        public List<PollAnswer> Answers { get; set; }

        /// <summary>
        ///     Время создания опроса
        /// </summary>
        public DateTime? DateCreated { get; set; }

        /// <summary>
        ///     Текст вопроса для опроса
        /// </summary>
        public string Question { get; set; }

        /// <summary>
        ///     Общее количество ответивших пользователей
        /// </summary>
        public int? Votes { get; set; }

        /// <summary>
        ///     Является ли опрос анонимным
        /// </summary>
        public bool? Anonymous { get; set; }

        public Poll(ApiNode node)
        {
            Id = node.Int("id");
            OwnerId = node.Int("owner_id");
            DateCreated = node.DateTime("created");
            Question = node.String("question");
            Votes = node.Int("votes");
            AnswerId = node.Int("answer_id");
            Anonymous = node.Bool("anonymous");

            var answers = node.SelectNode("answers");
            if (answers != null)
            {
                Answers = answers.ChildNodes.Select(x => new PollAnswer(x)).ToList();
            }
        }
    }
}